package model;

import java.sql.ResultSet;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Vector;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;

public class Utilisateur {

	String nom = "";
	String prenom = "";
	String fonction = "";
	int id = 0;
	
	public Utilisateur(){
	}
	
	//------- GET -----------
	public String getNom(){
		return this.nom;
	}
	
	public String getPrenom(){
		return this.prenom;
	}
	
	public String getFonction() {		
		return this.fonction;	
	}
	
	public int getId(){
		return this.id;
	}
	
	public Vector<Utilisateur> getUsers() throws ClassNotFoundException{
		
		Vector<Utilisateur> vecUsers = new Vector<Utilisateur>();
		
		String url = "jdbc:mysql://localhost:3306/Base";
		String utilisateur = "root";
		String motdepasse = "mysqlroot";
		Connection connexion = null;
		
		try{
			Class.forName("com.mysql.jdbc.Driver");
        	connexion = (Connection) DriverManager.getConnection(url, utilisateur, motdepasse);
        	Statement query = (Statement) connexion.createStatement();
        	ResultSet rs = query.executeQuery("SELECT * FROM utilisateurs");

        	while(rs.next())
        	{
        		Utilisateur user = new Utilisateur();
        		user.setNom(rs.getString("nom"));
        		user.setPrenom(rs.getString("prenom"));
        		user.setFonction(rs.getString("fonction"));
        		user.setId(rs.getInt("id"));
        		
        		vecUsers.add(user);
        	}
        }
		catch ( SQLException e ) {
        	System.out.println("Impossible de lire la liste des utilisateurs");
        } finally {
            if ( connexion != null )
                try {
                    connexion.close();
                } catch ( SQLException ignore ) {
                	}
        }
		
		return vecUsers;
		
	}
	
	
	//------- SET -----------
	public void setNom(String _nom){
		this.nom = _nom;
	}
	
	public void setPrenom(String _prenom){
		this.prenom = _prenom;
	}
	
	public void setFonction(String _fonction){
		this.fonction = _fonction;
	}
	
	public void setId(int _id){
		this.id = _id;
	}
	
	
	
	public boolean isProf(){
		if ("professeur".equals(fonction))
			return true;
		else
			return false;
	}
	
	public boolean isEleve(){
		if ("eleve".equals(fonction))
			return true;
		else
			return false;
	}
	
	public boolean isAdmin(){
		if ("administrateur".equals(fonction))
			return true;
		else
			return false;
	}
	
	
	
	public boolean verifUser() throws ClassNotFoundException{
		String url = "jdbc:mysql://localhost:3306/Base";
		String utilisateur = "root";
		String motdepasse = "mysqlroot";
		Connection connexion = null;
		
		try{
			Class.forName("com.mysql.jdbc.Driver");
        	connexion = (Connection) DriverManager.getConnection(url, utilisateur, motdepasse);
        	Statement query = (Statement) connexion.createStatement();
        	ResultSet rs = query.executeQuery("SELECT * FROM utilisateurs WHERE nom=\""+nom+"\";");

        	while(rs.next())
        	{
            	System.out.println("Connexion aux elements...");
            	if(prenom.equals(rs.getString("prenom"))){
            		System.out.println("Nom et Prenom OK");
            		fonction = rs.getString("fonction");
            		return true;
            	}
            	else{
            		System.out.println("Utilisateur Introuvable");
            		return false;
            	}
        	}
        	
		} catch ( SQLException e ) {
        	System.out.println("CATCH : mauvaise lecture de l'utilisateur");
            /* G�rer les �ventuelles erreurs ici */
        } finally {
            if ( connexion != null )
                try {
                    /* Fermeture de la connexion */
                    connexion.close();
                } catch ( SQLException ignore ) {
                    /* Si une erreur survient lors de la fermeture, il suffit de l'ignorer. */
                }
        }
        return false;
	}
	
	public void addUserBD(String _nom, String _prenom, String _fonction) throws ClassNotFoundException{
		
		String url = "jdbc:mysql://localhost:3306/Base";
		String utilisateur = "root";
		String motdepasse = "mysqlroot";
		Connection connexion = null;
		
		try{
			Class.forName("com.mysql.jdbc.Driver");
	    	connexion = (Connection) DriverManager.getConnection(url, utilisateur, motdepasse);
	    	connexion.createStatement().execute("INSERT into utilisateurs (nom,prenom,fonction) VALUES ('"+_nom+"', '"+_prenom+"', '"+_fonction+"')");
	    	
			} catch ( SQLException e ) {
	    	System.out.println("Erreur : insertion utilisateur impossible");
//	    	return false;
	        /* Gérer les éventuelles erreurs ici */
			} finally {
	            if ( connexion != null )
	                try {
	                    /* Fermeture de la connexion */
	                    connexion.close();
	                	} catch ( SQLException ignore ) {
	                    /* Si une erreur survient lors de la fermeture, il suffit de l'ignorer. */
	          }
			}
//		return true;
	}
	
	public void killUser(String _id) throws ClassNotFoundException
	{
		String url = "jdbc:mysql://localhost:3306/Base";
		String utilisateur = "root";
		String motdepasse = "mysqlroot";
		Connection connexion = null;
		
		try{
			Class.forName("com.mysql.jdbc.Driver");
        	connexion = (Connection) DriverManager.getConnection(url, utilisateur, motdepasse);
        	Statement query = (Statement) connexion.createStatement();
        	ResultSet rs = query.executeQuery("SELECT * FROM utilisateurs WHERE id='"+_id+"'");
        	
        	if (rs.next())
        	{
        		System.out.println("Suppression de l'utilisateur en cours...");
        		String sql = "DELETE FROM utilisateurs WHERE id="+_id+";";

        		System.out.println(""+sql);
        		query.execute(sql);
        		System.out.println("Utilisateur supprimé !");
        	}
        	
		} catch ( SQLException e ) {
        	System.out.println("ERREUR : Impossible de supprimer l'utilisateur");
            /* G�rer les �ventuelles erreurs ici */
        } finally {
            if ( connexion != null )
                try {
                    /* Fermeture de la connexion */
                    connexion.close();
                } catch ( SQLException ignore ) {
                    /* Si une erreur survient lors de la fermeture, il suffit de l'ignorer. */
                }
        }
//		return true;
	}
	
	
	
	
	
}
